package com.imedical.util;

import cn.hutool.core.io.FileUtil;
import cn.hutool.core.util.StrUtil;
import lombok.extern.slf4j.Slf4j;

/**
 * 公共请求接口数据处理
 *
 * @author zhongyj <1126834403@qq.com><br/>
 * @date 2022/1/20
 */
@SuppressWarnings("AlibabaAvoidComplexCondition")
@Slf4j
public class CommonRequestDataDealUtils {

    /**
     * 根据文件路径和文件展示方式处理下载的文件
     *
     * @param displayMode      展示方式
     * @param downloadFilePath 下载路径
     * @return Object
     */
    public static Object dealDownloadFile(String displayMode, String downloadFilePath) {
        if (StrUtil.isBlank(displayMode)) {
            R.makeResponse(downloadFilePath);
            return null;
        } else if (StrUtil.equalsIgnoreCase(FileUtil.getType(FileUtil.file(downloadFilePath)), displayMode)) {
            R.makeResponse(downloadFilePath);
            return null;
        } else if (StrUtil.equalsIgnoreCase("PDF", displayMode)) {
            if (StrUtil.equalsIgnoreCase(FileUtil.getType(FileUtil.file(downloadFilePath)), "HTML")) {
                // 文件类型为HTML。需要转为PDF
                String pdfFilePath = HtmlToPDFUtils.build().convertPdfFromText(FileUtil.readUtf8String(downloadFilePath));
                R.makeResponse(pdfFilePath);
                return null;
            }
        } else if (StrUtil.equalsIgnoreCase("PNG", displayMode)) {
            if (StrUtil.equalsIgnoreCase(FileUtil.getType(FileUtil.file(downloadFilePath)), "PDF")) {
                // PDF转为图片
                String pngFilePath = StrUtil.splitToArray(downloadFilePath, ".")[0] + ".png";
                PdfUtil.pdf2multiImage(downloadFilePath, pngFilePath, PdfUtil.DEFAULT_DPI);
                if (StrUtil.isBlank(pngFilePath)) {
                    R.makeImageAndResponse("PDF 转图片失败，请联系开发人员~");
                } else {
                    // 没有转换失败
                    R.makeResponse(pngFilePath);
                }
                return null;
            } else if (StrUtil.equalsIgnoreCase(FileUtil.getType(FileUtil.file(downloadFilePath)), "HTML")) {
                // HTML转PNG
                String pngFilePath = StrUtil.splitToArray(downloadFilePath, ".")[0] + ".png";

                String pdfFilePath = HtmlToPDFUtils.build().convertPdfFromText(FileUtil.readUtf8String(downloadFilePath));
                PdfUtil.pdf2multiImage(pdfFilePath, pngFilePath, PdfUtil.DEFAULT_DPI);

                if (StrUtil.isBlank(pngFilePath)) {
                    R.makeImageAndResponse("PDF 转图片失败，请联系开发人员~");
                } else {
                    // 没有转换失败
                    R.makeResponse(pngFilePath);
                }
                return null;
            }
        }
        R.makeImageAndResponse(StrUtil.format("抱歉! 下载的文件类型为【{}】, 暂时未支持该类型转为{}", FileUtil.getType(FileUtil.file(downloadFilePath)), displayMode));
        return null;
    }

}